package com.aasa.siccosap.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.sql.DataSource;

import org.apache.log4j.Logger;

import oracle.jdbc.OracleTypes;

import com.aasa.siccosap.bean.CtaCteCliente;
import com.aasa.siccosap.bean.CtaCteCobranzas;
import com.aasa.siccosap.bean.CtaCteDcEmpCodEmp1;
import com.aasa.siccosap.bean.CtaCteDcEmpCodEmp2;
import com.aasa.siccosap.bean.CtaCteDocumentosDeuda;
import com.aasa.siccosap.bean.CuentaClienteSaplicacionDeuNotaCre;
import com.aasa.siccosap.bean.CuentaClienteSaplicacionDeuSaldoFavor;
import com.aasa.siccosap.bean.CuentaClienteSaplicacionDeuSaldoPendiente;
import com.aasa.siccosap.bean.ParametrosConsultaCuentaClienteSaplicacion;
import com.aasa.siccosap.util.Constantes;

public class ClienteCtaCteDAO extends ConsultaClienteBaseDAO{
	
	static Logger logger = Logger.getLogger("ClienteCtaCteDAO.class");
	public ClienteCtaCteDAO()	throws accesoDaoException {
		super();
	}
	
	public ClienteCtaCteDAO(DataSource dataSource) {
		super(dataSource);
	}

	public List<CtaCteCliente> consultaClienteSappCancelado(ParametrosConsultaCuentaClienteSaplicacion parametros) throws SQLException{		
		this.av_message = null;
        ResultSet rs = null;
        ResultSet rsDocumentosDeuda = null;
        ResultSet rsCobranzas = null;
        ResultSet rsGDcEdEmpCodEmp1 = null;
        ResultSet rsGDcEdEmpCodEmp2 = null;
        
        this.storedProcedure = "begin SICCOSPK_PROYECTO.SICCOSSP_CONSUL_CLIENT_SAP_CAN(?,?,?,?,?,?); end;";
        List<CtaCteCliente> consultaClienteApp=new ArrayList<CtaCteCliente>();
        try{
                this.conn = dataSource.getConnection();
                this.stmt = this.conn.prepareCall(storedProcedure);
                configuraParametrosConsultaClienteSappCancelado(parametros);
                this.stmt.execute();
                this.av_message = (String)stmt.getObject(1);
                if(this.av_message.trim().toUpperCase().endsWith(Constantes.NO_ERRORS)){                	
                    
                rs = (ResultSet)stmt.getObject(2);
                	
                	while(rs.next()){
                		CtaCteCliente objCtaCteCliente = new CtaCteCliente();
                		objCtaCteCliente.setStrPb_codCli(rs.getString("COD_CLI"));
                		objCtaCteCliente.setStrPb_razSoc(rs.getString("RAZ_SOC"));
                		objCtaCteCliente.setStrPb_ruc(rs.getString("RUC"));
                		objCtaCteCliente.setDblPb_tipoCambio(rs.getDouble("TIPO_CAMBIO"));
                		rsDocumentosDeuda = (ResultSet)rs.getObject("DOCUMENTOS_DEUDA");
                        
                		List<CtaCteDocumentosDeuda> lstCtaCteDocumentosDeuda=new ArrayList<CtaCteDocumentosDeuda>();
                        while(rsDocumentosDeuda.next()){
                        	CtaCteDocumentosDeuda objCtaCteDocumentosDeuda = new CtaCteDocumentosDeuda();
                        	objCtaCteDocumentosDeuda.setObjPb_fecVen(rsDocumentosDeuda.getDate("FEC_VEN"));
                        	objCtaCteDocumentosDeuda.setObjPb_fecEmi(rsDocumentosDeuda.getDate("FEC_EMI"));
                        	objCtaCteDocumentosDeuda.setStrPb_numeroManual(rsDocumentosDeuda.getString("NUMERO_MANUAL"));
                        	objCtaCteDocumentosDeuda.setStrPb_serieManual(rsDocumentosDeuda.getString("SERIE_MANUAL"));
                        	objCtaCteDocumentosDeuda.setStrPb_desAbv(rsDocumentosDeuda.getString("DES_ABV"));
                        	objCtaCteDocumentosDeuda.setDblPb_tipCam(rsDocumentosDeuda.getDouble("TIP_CAM"));
                        	objCtaCteDocumentosDeuda.setDblPb_cfDp(rsDocumentosDeuda.getDouble("CF_DP"));
                        	objCtaCteDocumentosDeuda.setDblPb_saldoDocumento(rsDocumentosDeuda.getDouble("SALDO_DOCUMENTO"));
                        	objCtaCteDocumentosDeuda.setDblPb_saldoDolDocumento(rsDocumentosDeuda.getDouble("SALDO_DOL_DOCUMENTO"));
                        	objCtaCteDocumentosDeuda.setDblPb_importeSoles(rsDocumentosDeuda.getDouble("IMPORTE_SOLES"));
                        	objCtaCteDocumentosDeuda.setDblPb_importeDolares(rsDocumentosDeuda.getDouble("IMPORTE_DOLARES"));
                        	
                        	rsCobranzas = (ResultSet)rsDocumentosDeuda.getObject("COBRANZAS");
                        	rsGDcEdEmpCodEmp1 = (ResultSet)rsDocumentosDeuda.getObject("G_DC_ED_EMP_COD_EMP1");
                        	
                        			List<CtaCteCobranzas> lstCtaCteCobranzas=new ArrayList<CtaCteCobranzas>();	
		                            while(rsCobranzas.next()){
		                            	CtaCteCobranzas objCtaCteCobranzas = new CtaCteCobranzas();
		                            	objCtaCteCobranzas.setStrPb_numDocRefer(rsCobranzas.getString("NUM_DOC_REFER"));
		                            	objCtaCteCobranzas.setStrPb_serieDocRefer(rsCobranzas.getString("SERIE_DOC_REFER"));
		                            	objCtaCteCobranzas.setStrPb_descTipoDocRefer(rsCobranzas.getString("DESC_TIPO_DOC_REFER"));
		                            	objCtaCteCobranzas.setDblPb_pagoDolares(rsCobranzas.getDouble("PAGO_DOLARES"));
		                            	objCtaCteCobranzas.setDblPb_pagoSoles(rsCobranzas.getDouble("PAGO_SOLES"));
		                            	objCtaCteCobranzas.setStrPb_numManNc(rsCobranzas.getString("NUM_MAN_NC"));
		                            	objCtaCteCobranzas.setStrPb_serManNc(rsCobranzas.getString("SER_MAN_NC"));
		                            	objCtaCteCobranzas.setStrPb_descTipoDocPagado(rsCobranzas.getString("DESC_TIPO_DOC_PAGADO"));
		                            	objCtaCteCobranzas.setObjPb_fecPag(rsCobranzas.getDate("FEC_PAG"));
		                            	objCtaCteCobranzas.setDblPb_tipCamMon(rsCobranzas.getDouble("TIP_CAM_MON"));
		                            	lstCtaCteCobranzas.add(objCtaCteCobranzas);
		                            	}
		                            
                        			List<CtaCteDcEmpCodEmp1> lstCtaCteDcEmpCodEmp1=new ArrayList<CtaCteDcEmpCodEmp1>();	
		                            while(rsGDcEdEmpCodEmp1.next()){
		                            	CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1 = new CtaCteDcEmpCodEmp1();
		                            	objCtaCteDcEmpCodEmp1.setDblPb_cfOtraMoneda(rsGDcEdEmpCodEmp1.getDouble("CF_OTRA_MONEDA"));
		                            	objCtaCteDcEmpCodEmp1.setDblPb_impPerSol(rsGDcEdEmpCodEmp1.getDouble("IMP_PER_SOL"));
		                            	objCtaCteDcEmpCodEmp1.setObjPb_tc1Fecha1(rsGDcEdEmpCodEmp1.getDate("TC1_FECHA"));
		                            	objCtaCteDcEmpCodEmp1.setStrPb_cfDocPer(rsGDcEdEmpCodEmp1.getString("CF_DOC_PER"));
		                            	objCtaCteDcEmpCodEmp1.setStrPb_cfTipoDocumento(rsGDcEdEmpCodEmp1.getString("CF_TIPO_DOCUMENTO"));
		                            	objCtaCteDcEmpCodEmp1.setObjPb_fecPag1(rsGDcEdEmpCodEmp1.getDate("FEC_PAG1"));
		                            	rsGDcEdEmpCodEmp2 = (ResultSet)rsGDcEdEmpCodEmp1.getObject("G_DC_ED_EMP_COD_EMP2");
		                            	
						                            	List<CtaCteDcEmpCodEmp2> lstCtaCteDcEmpCodEmp2=new ArrayList<CtaCteDcEmpCodEmp2>();	
							                            while(rsGDcEdEmpCodEmp2.next()){
							                            	CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2 = new CtaCteDcEmpCodEmp2();
							                            	objCtaCteDcEmpCodEmp2.setStrPb_cfNumManNc(rsGDcEdEmpCodEmp2.getString("CF_NUM_MAN_NC"));
							                            	objCtaCteDcEmpCodEmp2.setStrPb_cfDescTipDocPagado(rsGDcEdEmpCodEmp2.getString("CF_DESC_TIP_DOC_PAGADO"));
							                            	objCtaCteDcEmpCodEmp2.setStrPb_cfSerManNc(rsGDcEdEmpCodEmp2.getString("CF_SER_MAN_NC"));
							                            	objCtaCteDcEmpCodEmp2.setObjPb_fecPag2(rsGDcEdEmpCodEmp2.getDate("FEC_PAG"));
							                            	objCtaCteDcEmpCodEmp2.setDblPb_cfPagoDolares(rsGDcEdEmpCodEmp2.getDouble("CF_PAGO_DOLARES"));
							                            	objCtaCteDcEmpCodEmp2.setDblPb_cfPagoSoles(rsGDcEdEmpCodEmp2.getDouble("CF_PAGO_SOLES"));
							                            	lstCtaCteDcEmpCodEmp2.add(objCtaCteDcEmpCodEmp2);
							                            	}
		                            	
							            if(rsGDcEdEmpCodEmp2!=null){	rsGDcEdEmpCodEmp2.close(); 	}
		                            	objCtaCteDcEmpCodEmp1.setLstCobranzas(lstCtaCteDcEmpCodEmp2);
		                            	lstCtaCteDcEmpCodEmp1.add(objCtaCteDcEmpCodEmp1);
		                            	}		
		                            
		                    if(rsCobranzas!=null)		{	rsCobranzas.close();			}
		                    if(rsGDcEdEmpCodEmp1!=null)	{	rsGDcEdEmpCodEmp1.close();		}
                        	objCtaCteDocumentosDeuda.setLstCobranzas(lstCtaCteCobranzas);
                        	objCtaCteDocumentosDeuda.setLstDcEdEmpCodEmp1(lstCtaCteDcEmpCodEmp1);
                        	lstCtaCteDocumentosDeuda.add(objCtaCteDocumentosDeuda);
                        	}

                        if(rsDocumentosDeuda!=null)		{	rsDocumentosDeuda.close();		}
                        objCtaCteCliente.setLstDocumentosDeuda(lstCtaCteDocumentosDeuda);
                        consultaClienteApp.add(objCtaCteCliente);
                        }  
                	
                }else{
                    return null;
                }

                
        }catch (Exception e){
                e.printStackTrace();
                return null;
        }finally{
    			try {
    				if (rsDocumentosDeuda != null)	rsDocumentosDeuda.close();	
    			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}

    			try {
    				if (rsCobranzas != null)	rsCobranzas.close();	
    			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}

    			try {
    				if (rsGDcEdEmpCodEmp1 != null)	rsGDcEdEmpCodEmp1.close();	
    			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}

    			try {
    				if (rsGDcEdEmpCodEmp2 != null)	rsGDcEdEmpCodEmp2.close();	
    			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}

    			try {
    				if (rs != null)	rs.close();	
    			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}
    			
        		close(this.conn, rs, stmt);
        }
		
		return consultaClienteApp;
	}

	

	
	public List<CtaCteCliente> consultaClienteSappDeudaPrincipal(ParametrosConsultaCuentaClienteSaplicacion parametros) throws SQLException{		
		this.av_message = null;
        ResultSet rs = null;
        ResultSet rsDocumentosDeuda = null;
        ResultSet rsCobranzas = null;
        ResultSet rsGDcEdEmpCodEmp1 = null;
        ResultSet rsGDcEdEmpCodEmp2 = null;
        
        this.storedProcedure = "begin SICCOSPK_PROYECTO.SICCOSSP_CONSUL_CLI_SAPP_DEUDA(?,?,?,?,?,?); end;";
        List<CtaCteCliente> consultaClienteApp=new ArrayList<CtaCteCliente>();
        try{
                this.conn = dataSource.getConnection();
                this.stmt = this.conn.prepareCall(storedProcedure);
                configuraParametrosConsultaClienteSappCancelado(parametros);
                this.stmt.execute();
                this.av_message = (String)stmt.getObject(1);
                if(this.av_message.trim().toUpperCase().endsWith(Constantes.NO_ERRORS)){                	
                    
                	rs = (ResultSet)stmt.getObject(2);
                	

                	while(rs.next()){
                		CtaCteCliente objCtaCteCliente = new CtaCteCliente();
                		objCtaCteCliente.setStrPb_codCli(rs.getString("COD_CLI"));
                		objCtaCteCliente.setStrPb_razSoc(rs.getString("RAZ_SOC"));
                		objCtaCteCliente.setStrPb_ruc(rs.getString("RUC"));
                		objCtaCteCliente.setDblPb_tipoCambio(rs.getDouble("TIPO_CAMBIO"));
                		rsDocumentosDeuda = (ResultSet)rs.getObject("DOCUMENTOS_DEUDA");
                        
                		List<CtaCteDocumentosDeuda> lstCtaCteDocumentosDeuda=new ArrayList<CtaCteDocumentosDeuda>();
                        while(rsDocumentosDeuda.next()){
                        	CtaCteDocumentosDeuda objCtaCteDocumentosDeuda = new CtaCteDocumentosDeuda();
                        	objCtaCteDocumentosDeuda.setObjPb_fecVen(rsDocumentosDeuda.getDate("FEC_VEN"));
                        	objCtaCteDocumentosDeuda.setObjPb_fecEmi(rsDocumentosDeuda.getDate("FEC_EMI"));
                        	objCtaCteDocumentosDeuda.setStrPb_numeroManual(rsDocumentosDeuda.getString("NUMERO_MANUAL"));
                        	objCtaCteDocumentosDeuda.setStrPb_serieManual(rsDocumentosDeuda.getString("SERIE_MANUAL"));
                        	objCtaCteDocumentosDeuda.setStrPb_desAbv(rsDocumentosDeuda.getString("DES_ABV"));
                        	objCtaCteDocumentosDeuda.setDblPb_tipCam(rsDocumentosDeuda.getDouble("TIP_CAM"));
                        	objCtaCteDocumentosDeuda.setDblPb_cfDp(rsDocumentosDeuda.getDouble("CF_DP"));
                        	objCtaCteDocumentosDeuda.setDblPb_saldoDocumento(rsDocumentosDeuda.getDouble("SALDO_DOCUMENTO"));
                        	objCtaCteDocumentosDeuda.setDblPb_saldoDolDocumento(rsDocumentosDeuda.getDouble("SALDO_DOL_DOCUMENTO"));
                        	objCtaCteDocumentosDeuda.setDblPb_importeSoles(rsDocumentosDeuda.getDouble("IMPORTE_SOLES"));
                        	objCtaCteDocumentosDeuda.setDblPb_importeDolares(rsDocumentosDeuda.getDouble("IMPORTE_DOLARES"));
                        	
                        	rsCobranzas = (ResultSet)rsDocumentosDeuda.getObject("COBRANZAS");
                        	rsGDcEdEmpCodEmp1 = (ResultSet)rsDocumentosDeuda.getObject("G_DC_ED_EMP_COD_EMP1");
                        	
                        			List<CtaCteCobranzas> lstCtaCteCobranzas=new ArrayList<CtaCteCobranzas>();	
		                            while(rsCobranzas.next()){
		                            	CtaCteCobranzas objCtaCteCobranzas = new CtaCteCobranzas();
		                            	objCtaCteCobranzas.setStrPb_numDocRefer(rsCobranzas.getString("NUM_DOC_REFER"));
		                            	objCtaCteCobranzas.setStrPb_serieDocRefer(rsCobranzas.getString("SERIE_DOC_REFER"));
		                            	objCtaCteCobranzas.setStrPb_descTipoDocRefer(rsCobranzas.getString("DESC_TIPO_DOC_REFER"));
		                            	objCtaCteCobranzas.setDblPb_pagoDolares(rsCobranzas.getDouble("PAGO_DOLARES"));
		                            	objCtaCteCobranzas.setDblPb_pagoSoles(rsCobranzas.getDouble("PAGO_SOLES"));
		                            	objCtaCteCobranzas.setStrPb_numManNc(rsCobranzas.getString("NUM_MAN_NC"));
		                            	objCtaCteCobranzas.setStrPb_serManNc(rsCobranzas.getString("SER_MAN_NC"));
		                            	objCtaCteCobranzas.setStrPb_descTipoDocPagado(rsCobranzas.getString("DESC_TIPO_DOC_PAGADO"));
		                            	objCtaCteCobranzas.setObjPb_fecPag(rsCobranzas.getDate("FEC_PAG"));
		                            	objCtaCteCobranzas.setDblPb_tipCamMon(rsCobranzas.getDouble("TIP_CAM_MON"));
		                            	lstCtaCteCobranzas.add(objCtaCteCobranzas);
		                            	}
		                            
                        			List<CtaCteDcEmpCodEmp1> lstCtaCteDcEmpCodEmp1=new ArrayList<CtaCteDcEmpCodEmp1>();	
		                            while(rsGDcEdEmpCodEmp1.next()){
		                            	CtaCteDcEmpCodEmp1 objCtaCteDcEmpCodEmp1 = new CtaCteDcEmpCodEmp1();
		                            	objCtaCteDcEmpCodEmp1.setDblPb_cfOtraMoneda(rsGDcEdEmpCodEmp1.getDouble("CF_OTRA_MONEDA"));
		                            	objCtaCteDcEmpCodEmp1.setDblPb_impPerSol(rsGDcEdEmpCodEmp1.getDouble("IMP_PER_SOL"));
		                            	objCtaCteDcEmpCodEmp1.setObjPb_tc1Fecha1(rsGDcEdEmpCodEmp1.getDate("TC1_FECHA"));
		                            	objCtaCteDcEmpCodEmp1.setStrPb_cfDocPer(rsGDcEdEmpCodEmp1.getString("CF_DOC_PER"));
		                            	objCtaCteDcEmpCodEmp1.setStrPb_cfTipoDocumento(rsGDcEdEmpCodEmp1.getString("CF_TIPO_DOCUMENTO"));
		                            	objCtaCteDcEmpCodEmp1.setObjPb_fecPag1(rsGDcEdEmpCodEmp1.getDate("FEC_PAG1"));
		                            	rsGDcEdEmpCodEmp2 = (ResultSet)rsGDcEdEmpCodEmp1.getObject("G_DC_ED_EMP_COD_EMP2");
		                            	
						                            	List<CtaCteDcEmpCodEmp2> lstCtaCteDcEmpCodEmp2=new ArrayList<CtaCteDcEmpCodEmp2>();	
							                            while(rsGDcEdEmpCodEmp2.next()){
							                            	CtaCteDcEmpCodEmp2 objCtaCteDcEmpCodEmp2 = new CtaCteDcEmpCodEmp2();
							                            	objCtaCteDcEmpCodEmp2.setStrPb_cfNumManNc(rsGDcEdEmpCodEmp2.getString("CF_NUM_MAN_NC"));
							                            	objCtaCteDcEmpCodEmp2.setStrPb_cfDescTipDocPagado(rsGDcEdEmpCodEmp2.getString("CF_DESC_TIP_DOC_PAGADO"));
							                            	objCtaCteDcEmpCodEmp2.setStrPb_cfSerManNc(rsGDcEdEmpCodEmp2.getString("CF_SER_MAN_NC"));
							                            	objCtaCteDcEmpCodEmp2.setObjPb_fecPag2(rsGDcEdEmpCodEmp2.getDate("FEC_PAG"));
							                            	objCtaCteDcEmpCodEmp2.setDblPb_cfPagoDolares(rsGDcEdEmpCodEmp2.getDouble("CF_PAGO_DOLARES"));
							                            	objCtaCteDcEmpCodEmp2.setDblPb_cfPagoSoles(rsGDcEdEmpCodEmp2.getDouble("CF_PAGO_SOLES"));
							                            	lstCtaCteDcEmpCodEmp2.add(objCtaCteDcEmpCodEmp2);
							                            	}
							            if(rsGDcEdEmpCodEmp2!=null){	rsGDcEdEmpCodEmp2.close(); 	}
		                            	objCtaCteDcEmpCodEmp1.setLstCobranzas(lstCtaCteDcEmpCodEmp2);
		                            	lstCtaCteDcEmpCodEmp1.add(objCtaCteDcEmpCodEmp1);
		                            	}		                            
                            if(rsCobranzas!=null)		{	rsCobranzas.close(); 	}
                            if(rsGDcEdEmpCodEmp1!=null)	{	rsGDcEdEmpCodEmp1.close(); 	}
                        	objCtaCteDocumentosDeuda.setLstCobranzas(lstCtaCteCobranzas);
                        	objCtaCteDocumentosDeuda.setLstDcEdEmpCodEmp1(lstCtaCteDcEmpCodEmp1);
                        	lstCtaCteDocumentosDeuda.add(objCtaCteDocumentosDeuda);
                        	}
                        
                        if(rsDocumentosDeuda!=null)	{	rsDocumentosDeuda.close(); 	}
                        objCtaCteCliente.setLstDocumentosDeuda(lstCtaCteDocumentosDeuda);
                        consultaClienteApp.add(objCtaCteCliente);
                        }  
                
                }else{
                    return null;
                }
				
                
        }catch (Exception e){
                e.printStackTrace();
                return null;
        }finally{
        	
			try {
				if (rsDocumentosDeuda != null)	rsDocumentosDeuda.close();	
			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}

			try {
				if (rsCobranzas != null)	rsCobranzas.close();	
			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}

			try {
				if (rsGDcEdEmpCodEmp1 != null)	rsGDcEdEmpCodEmp1.close();	
			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}

			try {
				if (rsGDcEdEmpCodEmp2 != null)	rsGDcEdEmpCodEmp2.close();	
			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}

			try {
				if (rs != null)	rs.close();	
			} catch (SQLException sqlex) {	System.err.println(sqlex.getMessage());		}
			
    		close(this.conn, rs, stmt);        	
        }
		
		return consultaClienteApp;
	}
	
	
	public List<CuentaClienteSaplicacionDeuNotaCre> consultaClienteSappDeudaNotaCredito(ParametrosConsultaCuentaClienteSaplicacion parametros){		
        this.av_message = null;
        ResultSet rs = null;
        this.storedProcedure = "begin SICCOSPK_PROYECTO.SICCOSSP_CONSUL_CLI_SAP_DEU_NC(?,?,?,?,?); end;";
        List<CuentaClienteSaplicacionDeuNotaCre> consultaClienteSinApp=new ArrayList<CuentaClienteSaplicacionDeuNotaCre>();
        try{
                this.conn = dataSource.getConnection();
                this.stmt = this.conn.prepareCall(storedProcedure);
                configuraParametrosConsultaClienteSappCancelado2(parametros);
                this.stmt.execute();
                this.av_message = (String)stmt.getObject(1);
                if(this.av_message.trim().toUpperCase().endsWith(Constantes.NO_ERRORS)){                	
                    
                	rs = (ResultSet)stmt.getObject(2);
                	
                    while(rs.next()){
                    	CuentaClienteSaplicacionDeuNotaCre registroCtaCte = creaRegistroCuentaClienteSaplicacionDeuNotaCre(rs);
                    	consultaClienteSinApp.add(registroCtaCte);
                    }
                }else{
                    return null;
                }

                
        }catch (Exception e){
                e.printStackTrace();
                return null;
        }finally{
        		close(this.conn, rs, stmt);
        }
		
		return consultaClienteSinApp;
	}
	
	
	public List<CuentaClienteSaplicacionDeuSaldoFavor> consultaClienteSappDeudaSaldosFavor(ParametrosConsultaCuentaClienteSaplicacion parametros){		
        this.av_message = null;
        ResultSet rs = null;
        this.storedProcedure = "begin SICCOSPK_PROYECTO.SICCOSSP_CONSUL_CLI_SAP_DEU_SF(?,?,?,?,?); end;";
        List<CuentaClienteSaplicacionDeuSaldoFavor> consultaClienteSinApp=new ArrayList<CuentaClienteSaplicacionDeuSaldoFavor>();
        try{
                this.conn = dataSource.getConnection();
                this.stmt = this.conn.prepareCall(storedProcedure);
                configuraParametrosConsultaClienteSappCancelado2(parametros);
                this.stmt.execute();
                this.av_message = (String)stmt.getObject(1);
                if(this.av_message.trim().toUpperCase().endsWith(Constantes.NO_ERRORS)){                	
                    
                	rs = (ResultSet)stmt.getObject(2);

                	while(rs.next()){
                    	CuentaClienteSaplicacionDeuSaldoFavor registroCtaCte = creaRegistroCuentaClienteSaplicacionDeuSaldoFavor(rs);
                    	consultaClienteSinApp.add(registroCtaCte);
                    }
                	
                }else{
                    return null;
                }

        }catch (Exception e){
                e.printStackTrace();
                return null;
        }finally{
        		close(this.conn, rs, stmt);
        }
		
		return consultaClienteSinApp;
	}
	
	
	public List<CuentaClienteSaplicacionDeuSaldoPendiente> consultaClienteSappDeudaSaldosPendiente(ParametrosConsultaCuentaClienteSaplicacion parametros){		
        this.av_message = null;
        ResultSet rs = null;
        this.storedProcedure = "begin SICCOSPK_PROYECTO.SICCOSSP_CONSUL_CLI_SAP_DEU_SP(?,?,?,?,?); end;";
        List<CuentaClienteSaplicacionDeuSaldoPendiente> consultaClienteSinApp=new ArrayList<CuentaClienteSaplicacionDeuSaldoPendiente>();
        try{
                this.conn = dataSource.getConnection();
                this.stmt = this.conn.prepareCall(storedProcedure);
                configuraParametrosConsultaClienteSappCancelado2(parametros);
                this.stmt.execute();
                this.av_message = (String)stmt.getObject(1);
                if(this.av_message.trim().toUpperCase().endsWith(Constantes.NO_ERRORS)){                	
                    
                	rs = (ResultSet)stmt.getObject(2);
                	while(rs.next()){
                    	CuentaClienteSaplicacionDeuSaldoPendiente registroCtaCte = creaRegistroCuentaClienteSaplicacionDeuSaldoPendiente(rs);
                    	consultaClienteSinApp.add(registroCtaCte);
                    }
                	
                }else{
                    return null;
                }

        }catch (Exception e){
                e.printStackTrace();
                return null;
        }finally{
        		close(this.conn, rs, stmt);
        }
		
		return consultaClienteSinApp;
	}
	
	
	
	
	
	
	
	
	private void configuraParametrosConsultaClienteSappCancelado(ParametrosConsultaCuentaClienteSaplicacion parametros) throws SQLException {
		stmt.registerOutParameter(1, OracleTypes.VARCHAR);
		stmt.registerOutParameter(2, OracleTypes.CURSOR);
		stmt.setString(3, parametros.getStrPb_codigoCliente());
		stmt.setString(4, parametros.getStrPb_estado());
        java.sql.Date fechaInicioSQL = new java.sql.Date(parametros.getObjPb_fechaInicio().getTime());
        java.sql.Date fechaFinSQL = new java.sql.Date(parametros.getObjPb_fechaFin().getTime());
        stmt.setDate(5,fechaInicioSQL);	       
        stmt.setDate(6,fechaFinSQL);
	}

	private void configuraParametrosConsultaClienteSappCancelado2(ParametrosConsultaCuentaClienteSaplicacion parametros) throws SQLException {
		stmt.registerOutParameter(1, OracleTypes.VARCHAR);
		stmt.registerOutParameter(2, OracleTypes.CURSOR);
		stmt.setString(3, parametros.getStrPb_codigoCliente());
        java.sql.Date fechaInicioSQL = new java.sql.Date(parametros.getObjPb_fechaInicio().getTime());
        java.sql.Date fechaFinSQL = new java.sql.Date(parametros.getObjPb_fechaFin().getTime());
        stmt.setDate(4,fechaInicioSQL);	       
        stmt.setDate(5,fechaFinSQL);
	}
	
	
private CuentaClienteSaplicacionDeuNotaCre creaRegistroCuentaClienteSaplicacionDeuNotaCre(ResultSet rs) throws SQLException {
    
	CuentaClienteSaplicacionDeuNotaCre bean = new CuentaClienteSaplicacionDeuNotaCre();
		bean.setStrPb_serieManual(rs.getString("SERIE_MANUAL"));
		bean.setStrPb_numeroManual(rs.getString("NUMERO_MANUAL"));
		bean.setObjPb_fecEmi(rs.getDate("FEC_EMI"));
		bean.setDblPb_montoSoles(rs.getDouble("MONTO_SOLES"));
		bean.setDblPb_montoDolares(rs.getDouble("MONTO_DOLARES"));
		bean.setDblPb_saldoNotaCreditoDolares(rs.getDouble("SALDO_NOTA_CREDITO_DOLARES"));
		bean.setDblPb_saldoNotaCreditoSoles(rs.getDouble("SALDO_NOTA_CREDITO_SOLES"));
        return (bean);
    }




private CuentaClienteSaplicacionDeuSaldoFavor creaRegistroCuentaClienteSaplicacionDeuSaldoFavor(ResultSet rs) throws SQLException {
    
	CuentaClienteSaplicacionDeuSaldoFavor bean = new CuentaClienteSaplicacionDeuSaldoFavor();
		bean.setStrPb_rvMeaning(rs.getString("RV_MEANING"));
		bean.setStrPb_serie(rs.getString("SERIE"));
		bean.setStrPb_numero(rs.getString("NUMERO"));
		bean.setObjPb_tc1Fecha(rs.getDate("TC1_FECHA"));
		bean.setStrPb_serieDocOrigen(rs.getString("SERIE_DOC_ORIGEN"));
		bean.setStrPb_numeroDocOrigen(rs.getString("NUMERO_DOC_ORIGEN"));
		bean.setObjPb_fechaDepositoBd(rs.getDate("FECHA_DEPOSITO_BD"));
		bean.setDblPb_favorSoles(rs.getDouble("FAVOR_SOLES"));
		bean.setDblPb_favorDolares(rs.getDouble("FAVOR_DOLARES"));
		bean.setStrPb_descTipoDocOrigen(rs.getString("DESC_TIPO_DOC_ORIGEN"));
		bean.setDblPb_saldoSaldoFavorSoles(rs.getDouble("SALDO_SALDO_FAVOR_SOLES"));
		bean.setDblPb_saldoSaldoFavorDolares(rs.getDouble("SALDO_SALDO_FAVOR_DOLARES"));
        return (bean);
    }




private CuentaClienteSaplicacionDeuSaldoPendiente creaRegistroCuentaClienteSaplicacionDeuSaldoPendiente(ResultSet rs) throws SQLException {
    
	CuentaClienteSaplicacionDeuSaldoPendiente bean = new CuentaClienteSaplicacionDeuSaldoPendiente();
		bean.setStrPb_rvMeaming(rs.getString("RV_MEANING"));
		bean.setStrPb_serie(rs.getString("SERIE"));
		bean.setStrPb_numero(rs.getString("NUMERO"));
		bean.setObjPb_tc1Fecha(rs.getDate("TC1_FECHA"));
		bean.setObjPb_fechaDepositoBd(rs.getDate("FECHA_DEPOSITO_BD"));
		bean.setStrPb_numeroDocOrigen(rs.getString("NUMERO_DOC_ORIGEN"));
		bean.setStrPb_serieDocOrigen(rs.getString("SERIE_DOC_ORIGEN"));
		bean.setDblPb_pendienteSoles(rs.getDouble("PENDIENTE_SOLES"));
		bean.setDblPb_pendienteDolares(rs.getDouble("PENDIENTE_DOLARES"));
		bean.setDblPb_saldoSpSoles(rs.getDouble("SALDO_SP_SOLES"));
		bean.setDblPb_saldoSpDolares(rs.getDouble("SALDO_SP_DOLARES"));
		bean.setStrPb_descTipoDocOriSp(rs.getString("DESC_TIPO_DOC_ORI_SP"));
		return (bean);
    }









	
}
